Tutorial step 2: creating the FilterDefinition struct

Every VirtualDub filter has a FilterDefinition struct of this format:

typedef struct FilterDefinition {

    struct FilterDefinition *next, *prev;
    FilterModule *module;

    char *              name;
    char *              desc;
    char *              maker;
    void *              private_data;
    int                 inst_data_size;

    FilterInitProc      initProc;
    FilterDeinitProc    deinitProc;
    FilterRunProc       runProc;
    FilterParamProc     paramProc;
    FilterConfigProc    configProc;
    FilterStringProc    stringProc;
    FilterStartProc     startProc;
    FilterEndProc       endProc;

    CScriptObject   *script_obj;

    FilterScriptStrProc fssProc;

} FilterDefinition;

This structure tells VirtualDub how to present the filter to the user and how to invoke it. These are the necessary fields:

The next, prev, module, and private_data members are for VirtualDub's internal use, and should be initialized to NULL.

Creating the FilterDefinition for our filter

We only support one function, and need no instance data, so our structure is fairly simple:

struct FilterDefinition filterDef_tutorial = {

    NULL, NULL, NULL,       // next, prev, module
    "tutorial",             // name
    "Emphasizes green and de-emphasizes blue in the image.",
                            // desc
    "anyone",               // maker
    NULL,                   // private_data
    0,                      // inst_data_size

    NULL,                   // initProc
    NULL,                   // deinitProc
    tutorialRunProc,        // runProc
    NULL,                   // paramProc
    NULL,                   // configProc
    NULL,                   // stringProc
    NULL,                   // startProc
    NULL,                   // endProc

    NULL,                   // script_obj
    NULL,                   // fssProc

};

We're done. Later on, we'll fill in other fields as we need them, but for a simple pixel-level filter, this is all we need.

[up] back to main page
[prev] tutorial[1]: creating the main routine
[next] tutorial[3]: building the DLL and testing the module


VirtualDub external filter SDK 1.05©1999-2001 Avery Lee <phaeron@virtualdub.org>